package src.A_JavaBase;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

// Date类 和 SimpleDateFormat类（简单的日期格式化类） 和 Calendar类（日历）
public class Oop_07Date {
    public static void main(String[] args) throws ParseException {
        // Date类
        Date date = new Date(); // 获取当前时间
        System.out.println(date); // 默认调用toString()方法--->输出Wed Dec 28 20:23:11 CST 2022
        System.out.println(date.getYear() + 1900); // 年
        System.out.println(date.getMonth() + 1); // 月
        System.out.println(date.getDate()); // 日
        System.out.println(date.getDay()); // 星期
        System.out.println(date.getHours()); // 时
        System.out.println(date.getMinutes()); // 分
        System.out.println(date.getSeconds()); // 秒
        System.out.println(date.getTime()); // 返回的是自1970.1.1 0:0:0 至今(程序运行的时间) 之间的毫秒差
        System.out.println();

        // SimpleDateFormat类
        // 1、将Date对象转化为字符串：
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
        String strDate = sdf.format(date);
        System.out.println(strDate); // 获取时间的第一种方式
        System.out.println(sdf.format(System.currentTimeMillis())); // 获取时间的第二种方式
        // 2、将字符串转化为Data对象
        Date strToDate = sdf.parse(strDate);
        System.out.println(strToDate);
        System.out.println();

        // Calendar类（日历）
        // Calendar是个抽象类，不能被创建对象
        // Calendar calendar = new GregorianCalendar();
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int cdate = calendar.get(Calendar.DATE);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);
        System.out.println(year + "年" + month + "月" + cdate + "日" + hour + "时" + minute + "分" + second + "秒"); // 获取时间的第三种方式
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); // 今天是今年的第多少天
        System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 这周是今年的第多少周
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 今天是这周的第几天,按第一天是周天算
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 今天是这个月的第多少天
    }
}
